/**
 * 给定一个链表，判断链表中是否有环。

如果链表中有某个节点，可以通过连续跟踪 next 指针再次到达，则链表中存在环。 为了表示给定链表中的环，我们使用整数 pos 来表示链表尾连接到链表中的位置（索引从 0 开始）。 如果 pos 是 -1，则在该链表中没有环。注意：pos 不作为参数进行传递，仅仅是为了标识链表的实际情况。

如果链表中存在环，则返回pos值，否则返回-1

 */

const Node = require('../../单链表/node')
const LinkedList = require('../../单链表/singlylinkedlist');
// 不带头节点，head直接为链表的第一个元素
var cyclePos = function (head) {
    if (head === null || head.next === null) return -1;
    // 快慢指针
    let slow = head
    let fast = slow.next
    while (slow !== fast) {
        slow = slow.next
        fast = fast.next.next
        if(fast.next === null || slow === null) {
            return -1
        }
    }
    let pa = head
    let pb = slow
    while(pa !== pb) {
        pa = pa.next
        pb = pb.next
    }
    return pa.data
}

